# constant
from pymxsml.mxsml_extension import MXSMLEX_DBDF_ID_BUFFER_SIZE as NVML_DEVICE_PCI_BUS_ID_BUFFER_SIZE
from pymxsml.mxsml_extension import MXSMLEX_DBDF_ID_BUFFER_V2_SIZE as NVML_DEVICE_PCI_BUS_ID_BUFFER_V2_SIZE
from pymxsml.mxsml_extension import MXSMLEX_NAME_V2_BUFFER_SIZE as NVML_DEVICE_NAME_V2_BUFFER_SIZE
from pymxsml.mxsml_extension import MXSMLEX_DEVICE_UUID_BUFFER_SIZE as NVML_DEVICE_UUID_BUFFER_SIZE
from pymxsml.mxsml_extension import MXSMLEX_DRIVER_VERSION_BUFFER_SIZE as NVML_SYSTEM_DRIVER_VERSION_BUFFER_SIZE

from pymxsml.mxsml_extension import MXSMLEX_FI_DEV_METAXLINK_LINK_COUNT as NVML_FI_DEV_NVLINK_LINK_COUNT

from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonAll as nvmlClocksThrottleReasonAll
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonApplicationsClocksSetting as nvmlClocksThrottleReasonApplicationsClocksSetting
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonDisplayClockSetting as nvmlClocksThrottleReasonDisplayClockSetting
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonGpuIdle as nvmlClocksThrottleReasonGpuIdle
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonHwPowerBrakeSlowdown as nvmlClocksThrottleReasonHwPowerBrakeSlowdown
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonHwSlowdown as nvmlClocksThrottleReasonHwSlowdown
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonHwThermalSlowdown as nvmlClocksThrottleReasonHwThermalSlowdown
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonNone as nvmlClocksThrottleReasonNone
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonSwPowerCap as nvmlClocksThrottleReasonSwPowerCap
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonSwThermalSlowdown as nvmlClocksThrottleReasonSwThermalSlowdown
from pymxsml.mxsml_extension import mxSmlExClocksThrottleReasonSyncBoost as nvmlClocksThrottleReasonSyncBoost
nvmlClocksThrottleReasonUserDefinedClocks = nvmlClocksThrottleReasonApplicationsClocksSetting


# enum
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_THRESHOLD_SHUTDOWN as NVML_TEMPERATURE_THRESHOLD_SHUTDOWN
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_THRESHOLD_SLOWDOWN as NVML_TEMPERATURE_THRESHOLD_SLOWDOWN
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_THRESHOLD_MEM_MAX as NVML_TEMPERATURE_THRESHOLD_MEM_MAX
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_THRESHOLD_GPU_MAX as NVML_TEMPERATURE_THRESHOLD_GPU_MAX
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN as NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MIN
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR as NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_CURR
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX as NVML_TEMPERATURE_THRESHOLD_ACOUSTIC_MAX
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_THRESHOLD_COUNT as NVML_TEMPERATURE_THRESHOLD_COUNT

from pymxsml.mxsml_extension import MXSMLEX_SUCCESS as NVML_SUCCESS
from pymxsml.mxsml_extension import MXSMLEX_ERROR_UNINITIALIZED as NVML_ERROR_UNINITIALIZED
from pymxsml.mxsml_extension import MXSMLEX_ERROR_INVALID_ARGUMENT as NVML_ERROR_INVALID_ARGUMENT
from pymxsml.mxsml_extension import MXSMLEX_ERROR_NOT_SUPPORTED as NVML_ERROR_NOT_SUPPORTED
from pymxsml.mxsml_extension import MXSMLEX_ERROR_NO_PERMISSION as NVML_ERROR_NO_PERMISSION
from pymxsml.mxsml_extension import MXSMLEX_ERROR_ALREADY_INITIALIZED as NVML_ERROR_ALREADY_INITIALIZED
from pymxsml.mxsml_extension import MXSMLEX_ERROR_NOT_FOUND as NVML_ERROR_NOT_FOUND
from pymxsml.mxsml_extension import MXSMLEX_ERROR_INSUFFICIENT_SIZE as NVML_ERROR_INSUFFICIENT_SIZE
from pymxsml.mxsml_extension import MXSMLEX_ERROR_INSUFFICIENT_POWER as NVML_ERROR_INSUFFICIENT_POWER
from pymxsml.mxsml_extension import MXSMLEX_ERROR_DRIVER_NOT_LOADED as NVML_ERROR_DRIVER_NOT_LOADED
from pymxsml.mxsml_extension import MXSMLEX_ERROR_TIMEOUT as NVML_ERROR_TIMEOUT
from pymxsml.mxsml_extension import MXSMLEX_ERROR_IRQ_ISSUE as NVML_ERROR_IRQ_ISSUE
from pymxsml.mxsml_extension import MXSMLEX_ERROR_LIBRARY_NOT_FOUND as NVML_ERROR_LIBRARY_NOT_FOUND
from pymxsml.mxsml_extension import MXSMLEX_ERROR_FUNCTION_NOT_FOUND as NVML_ERROR_FUNCTION_NOT_FOUND
from pymxsml.mxsml_extension import MXSMLEX_ERROR_CORRUPTED_INFOROM as NVML_ERROR_CORRUPTED_INFOROM
from pymxsml.mxsml_extension import MXSMLEX_ERROR_GPU_IS_LOST as NVML_ERROR_GPU_IS_LOST
from pymxsml.mxsml_extension import MXSMLEX_ERROR_RESET_REQUIRED as NVML_ERROR_RESET_REQUIRED
from pymxsml.mxsml_extension import MXSMLEX_ERROR_OPERATING_SYSTEM as NVML_ERROR_OPERATING_SYSTEM
from pymxsml.mxsml_extension import MXSMLEX_ERROR_LIB_RM_VERSION_MISMATCH as NVML_ERROR_LIB_RM_VERSION_MISMATCH
from pymxsml.mxsml_extension import MXSMLEX_ERROR_IN_USE as NVML_ERROR_IN_USE
from pymxsml.mxsml_extension import MXSMLEX_ERROR_MEMORY as NVML_ERROR_MEMORY
from pymxsml.mxsml_extension import MXSMLEX_ERROR_NO_DATA as NVML_ERROR_NO_DATA
from pymxsml.mxsml_extension import MXSMLEX_ERROR_VGPU_ECC_NOT_SUPPORTED as NVML_ERROR_VGPU_ECC_NOT_SUPPORTED
from pymxsml.mxsml_extension import MXSMLEX_ERROR_INSUFFICIENT_RESOURCES as NVML_ERROR_INSUFFICIENT_RESOURCES
from pymxsml.mxsml_extension import MXSMLEX_ERROR_FREQ_NOT_SUPPORTED as NVML_ERROR_FREQ_NOT_SUPPORTED
from pymxsml.mxsml_extension import MXSMLEX_ERROR_ARGUMENT_VERSION_MISMATCH as NVML_ERROR_ARGUMENT_VERSION_MISMATCH
from pymxsml.mxsml_extension import MXSMLEX_ERROR_DEPRECATED as NVML_ERROR_DEPRECATED
from pymxsml.mxsml_extension import MXSMLEX_ERROR_UNKNOWN as NVML_ERROR_UNKNOWN

from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_GPU as NVML_TEMPERATURE_GPU
from pymxsml.mxsml_extension import MXSMLEX_TEMPERATURE_COUNT as NVML_TEMPERATURE_COUNT

from pymxsml.mxsml_extension import MXSMLEX_PCIE_UTIL_TX_BYTES as NVML_PCIE_UTIL_TX_BYTES
from pymxsml.mxsml_extension import MXSMLEX_PCIE_UTIL_RX_BYTES as NVML_PCIE_UTIL_RX_BYTES
from pymxsml.mxsml_extension import MXSMLEX_PCIE_UTIL_COUNT as NVML_PCIE_UTIL_COUNT

from pymxsml.mxsml_extension import MXSMLEX_CLOCK_GRAPHICS as NVML_CLOCK_GRAPHICS
from pymxsml.mxsml_extension import MXSMLEX_CLOCK_SM as NVML_CLOCK_SM
from pymxsml.mxsml_extension import MXSMLEX_CLOCK_MEM as NVML_CLOCK_MEM
from pymxsml.mxsml_extension import MXSMLEX_CLOCK_VIDEO as NVML_CLOCK_VIDEO
from pymxsml.mxsml_extension import MXSMLEX_CLOCK_COUNT as NVML_CLOCK_COUNT

from pymxsml.mxsml_extension import MXSMLEX_FEATURE_DISABLED as NVML_FEATURE_DISABLED
from pymxsml.mxsml_extension import MXSMLEX_FEATURE_ENABLED as NVML_FEATURE_ENABLED

from pymxsml.mxsml_extension import MXSMLEX_P2P_STATUS_OK as NVML_P2P_STATUS_OK
from pymxsml.mxsml_extension import MXSMLEX_P2P_STATUS_CHIPSET_NOT_SUPPORTED as NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED
from pymxsml.mxsml_extension import MXSMLEX_P2P_STATUS_GPU_NOT_SUPPORTED as NVML_P2P_STATUS_GPU_NOT_SUPPORTED
from pymxsml.mxsml_extension import MXSMLEX_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED as NVML_P2P_STATUS_IOH_TOPOLOGY_NOT_SUPPORTED
from pymxsml.mxsml_extension import MXSMLEX_P2P_STATUS_DISABLED_BY_REGKEY as NVML_P2P_STATUS_DISABLED_BY_REGKEY
from pymxsml.mxsml_extension import MXSMLEX_P2P_STATUS_NOT_SUPPORTED as NVML_P2P_STATUS_NOT_SUPPORTED
from pymxsml.mxsml_extension import MXSMLEX_P2P_STATUS_UNKNOWN as NVML_P2P_STATUS_UNKNOWN
NVML_P2P_STATUS_CHIPSET_NOT_SUPPORTED = NVML_P2P_STATUS_CHIPSET_NOT_SUPPORED

from pymxsml.mxsml_extension import MXSMLEX_P2P_CAPS_INDEX_READ as NVML_P2P_CAPS_INDEX_READ
from pymxsml.mxsml_extension import MXSMLEX_P2P_CAPS_INDEX_WRITE as NVML_P2P_CAPS_INDEX_WRITE
from pymxsml.mxsml_extension import MXSMLEX_P2P_CAPS_INDEX_MXLINK as NVML_P2P_CAPS_INDEX_NVLINK
from pymxsml.mxsml_extension import MXSMLEX_P2P_CAPS_INDEX_ATOMICS as NVML_P2P_CAPS_INDEX_ATOMICS
from pymxsml.mxsml_extension import MXSMLEX_P2P_CAPS_INDEX_PROP as NVML_P2P_CAPS_INDEX_PROP
from pymxsml.mxsml_extension import MXSMLEX_P2P_CAPS_INDEX_UNKNOWN as NVML_P2P_CAPS_INDEX_UNKNOWN

from pymxsml.mxsml_extension import MXSMLEX_PSTATE_0 as NVML_PSTATE_0
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_1 as NVML_PSTATE_1
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_2 as NVML_PSTATE_2
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_3 as NVML_PSTATE_3
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_4 as NVML_PSTATE_4
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_5 as NVML_PSTATE_5
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_6 as NVML_PSTATE_6
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_7 as NVML_PSTATE_7
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_8 as NVML_PSTATE_8
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_9 as NVML_PSTATE_9
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_10 as NVML_PSTATE_10
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_11 as NVML_PSTATE_11
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_12 as NVML_PSTATE_12
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_13 as NVML_PSTATE_13
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_14 as NVML_PSTATE_14
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_15 as NVML_PSTATE_15
from pymxsml.mxsml_extension import MXSMLEX_PSTATE_UNKNOWN as NVML_PSTATE_UNKNOWN

from pymxsml.mxsml_extension import MXSMLEX_TOPOLOGY_INTERNAL as NVML_TOPOLOGY_INTERNAL
from pymxsml.mxsml_extension import MXSMLEX_TOPOLOGY_SINGLE as NVML_TOPOLOGY_SINGLE
from pymxsml.mxsml_extension import MXSMLEX_TOPOLOGY_MULTIPLE as NVML_TOPOLOGY_MULTIPLE
from pymxsml.mxsml_extension import MXSMLEX_TOPOLOGY_HOSTBRIDGE as NVML_TOPOLOGY_HOSTBRIDGE
from pymxsml.mxsml_extension import MXSMLEX_TOPOLOGY_NODE as NVML_TOPOLOGY_NODE
from pymxsml.mxsml_extension import MXSMLEX_TOPOLOGY_SYSTEM as NVML_TOPOLOGY_SYSTEM

from pymxsml.mxsml_extension import MXSMLEX_METAXLINK_DEVICE_TYPE_GPU as NVML_NVLINK_DEVICE_TYPE_GPU
from pymxsml.mxsml_extension import MXSMLEX_METAXLINK_DEVICE_TYPE_NPU as NVML_NVLINK_DEVICE_TYPE_IBMNPU
from pymxsml.mxsml_extension import MXSMLEX_METAXLINK_DEVICE_TYPE_SWITCH as NVML_NVLINK_DEVICE_TYPE_SWITCH
from pymxsml.mxsml_extension import MXSMLEX_METAXLINK_DEVICE_TYPE_UNKNOWN as NVML_NVLINK_DEVICE_TYPE_UNKNOWN

from pymxsml.mxsml_extension import MXSMLEX_VALUE_TYPE_DOUBLE as NVML_VALUE_TYPE_DOUBLE
from pymxsml.mxsml_extension import MXSMLEX_VALUE_TYPE_UNSIGNED_INT as NVML_VALUE_TYPE_UNSIGNED_INT
from pymxsml.mxsml_extension import MXSMLEX_VALUE_TYPE_UNSIGNED_LONG as NVML_VALUE_TYPE_UNSIGNED_LONG
from pymxsml.mxsml_extension import MXSMLEX_VALUE_TYPE_UNSIGNED_LONG_LONG as NVML_VALUE_TYPE_UNSIGNED_LONG_LONG
from pymxsml.mxsml_extension import MXSMLEX_VALUE_TYPE_SIGNED_LONG_LONG as NVML_VALUE_TYPE_SIGNED_LONG_LONG
from pymxsml.mxsml_extension import MXSMLEX_VALUE_TYPE_SIGNED_INT as NVML_VALUE_TYPE_SIGNED_INT
from pymxsml.mxsml_extension import MXSMLEX_VALUE_TYPE_COUNT as NVML_VALUE_TYPE_COUNT


# structure
from pymxsml.mxsml_extension import MXSMLEXError as NVMLError
from pymxsml.mxsml_extension import struct_c_mxSmlExDevice_t as struct_c_nvmlDevice_t
from pymxsml.mxsml_extension import c_mxSmlExDevice_t as c_nvmlDevice_t
from pymxsml.mxsml_extension import c_mxSmlExFieldValue_t as nvmlFieldValue_t
from pymxsml.mxsml_extension import c_mxSmlExValue_t as c_nvmlValue_t
from pymxsml.mxsml_extension import c_mxSmlExPciInfo_t as nvmlPciInfo_t
from pymxsml.mxsml_extension import c_mxSmlExUtilization_t as c_nvmlUtilization_t
from pymxsml.mxsml_extension import c_mxSmlExMemory_t as c_nvmlMemory_t
from pymxsml.mxsml_extension import c_mxsmlExProcessInfo_t as c_nvmlProcessInfo_t
from pymxsml.mxsml_extension import c_mxSmlExExcludedDeviceInfo_t as c_nvmlExcludedDeviceInfo_t


# functions
from pymxsml.mxsml_extension import mxSmlExInit as nvmlInit
from pymxsml.mxsml_extension import mxSmlExShutdown as nvmlShutdown
from pymxsml.mxsml_extension import mxSmlExErrorString as nvmlErrorString

from pymxsml.mxsml_extension import mxSmlExSystemGetDriverVersion as nvmlSystemGetDriverVersion
from pymxsml.mxsml_extension import mxSmlExSystemGetMXSMLEXVersion as nvmlSystemGetNVMLVersion

from pymxsml.mxsml_extension import mxSmlExDeviceGetCount as nvmlDeviceGetCount
from pymxsml.mxsml_extension import mxSmlExDeviceGetHandleByIndex as nvmlDeviceGetHandleByIndex
from pymxsml.mxsml_extension import mxSmlExDeviceGetHandleByUUID as nvmlDeviceGetHandleByUUID
from pymxsml.mxsml_extension import mxSmlExDeviceGetHandleByPciBusId as nvmlDeviceGetHandleByPciBusId
from pymxsml.mxsml_extension import mxSmlExDeviceGetName as nvmlDeviceGetName
from pymxsml.mxsml_extension import mxSmlExDeviceGetUUID as nvmlDeviceGetUUID
from pymxsml.mxsml_extension import mxSmlExDeviceGetPciInfo as nvmlDeviceGetPciInfo
from pymxsml.mxsml_extension import mxSmlExDeviceGetMemoryInfo as nvmlDeviceGetMemoryInfo
from pymxsml.mxsml_extension import mxSmlExDeviceGetFanSpeed as nvmlDeviceGetFanSpeed
from pymxsml.mxsml_extension import mxSmlExDeviceGetFanSpeed_v2 as nvmlDeviceGetFanSpeed_v2
from pymxsml.mxsml_extension import mxSmlExDeviceGetUtilizationRates as nvmlDeviceGetUtilizationRates
from pymxsml.mxsml_extension import mxSmlExDeviceGetMinorNumber as nvmlDeviceGetMinorNumber
from pymxsml.mxsml_extension import mxSmlExDeviceGetMetaXLinkState as nvmlDeviceGetNvLinkState
from pymxsml.mxsml_extension import mxSmlExDeviceGetMetaXLinkRemotePciInfo as nvmlDeviceGetNvLinkRemotePciInfo
from pymxsml.mxsml_extension import mxSmlExDeviceGetTemperature as nvmlDeviceGetTemperature
from pymxsml.mxsml_extension import mxSmlExDeviceGetCurrPcieLinkWidth as nvmlDeviceGetCurrPcieLinkWidth
from pymxsml.mxsml_extension import mxSmlExDeviceGetComputeRunningProcesses as nvmlDeviceGetComputeRunningProcesses
from pymxsml.mxsml_extension import mxSmlExDeviceGetComputeCapability as nvmlDeviceGetCudaComputeCapability
from pymxsml.mxsml_extension import mxSmlExDeviceGetPowerUsage as nvmlDeviceGetPowerUsage
from pymxsml.mxsml_extension import mxSmlExDeviceGetPowerManagementLimit as nvmlDeviceGetPowerManagementLimit
from pymxsml.mxsml_extension import mxSmlExDeviceGetMaxPcieLinkWidth as nvmlDeviceGetMaxPcieLinkWidth
from pymxsml.mxsml_extension import mxSmlExGetPcieThroughput as nvmlDeviceGetPcieThroughput
from pymxsml.mxsml_extension import mxSmlExDeviceGetTemperatureThreshold as nvmlDeviceGetTemperatureThreshold
from pymxsml.mxsml_extension import mxSmlExDeviceGetClockInfo as nvmlDeviceGetClockInfo
from pymxsml.mxsml_extension import mxSmlExDeviceGetCurrentClocksThrottleReasons as nvmlDeviceGetCurrentClocksThrottleReasons
from pymxsml.mxsml_extension import mxSmlExDeviceGetSupportedClocksThrottleReasons as nvmlDeviceGetSupportedClocksThrottleReasons
from pymxsml.mxsml_extension import mxSmlExDeviceGetCpuAffinity as nvmlDeviceGetCpuAffinity
from pymxsml.mxsml_extension import mxSmlExDeviceGetSupportedMemoryClocks as nvmlDeviceGetSupportedMemoryClocks
from pymxsml.mxsml_extension import mxSmlExDeviceGetSupportedGraphicsClocks as nvmlDeviceGetSupportedGraphicsClocks
from pymxsml.mxsml_extension import mxSmlExDeviceSetApplicationsClocks as nvmlDeviceSetApplicationsClocks
from pymxsml.mxsml_extension import mxSmlExDeviceResetApplicationsClocks as nvmlDeviceResetApplicationsClocks
from pymxsml.mxsml_extension import mxSmlExDeviceGetApplicationsClock as nvmlDeviceGetApplicationsClock
from pymxsml.mxsml_extension import mxSmlExDeviceGetP2PStatus as nvmlDeviceGetP2PStatus
from pymxsml.mxsml_extension import mxSmlExDeviceGetPerformanceState as nvmlDeviceGetPerformanceState
from pymxsml.mxsml_extension import mxSmlExDeviceSetAutoBoostedClocksEnabled as nvmlDeviceSetAutoBoostedClocksEnabled
from pymxsml.mxsml_extension import mxSmlExDeviceGetAutoBoostedClocksEnabled as nvmlDeviceGetAutoBoostedClocksEnabled
from pymxsml.mxsml_extension import mxSmlExDeviceGetTopologyCommonAncestor as nvmlDeviceGetTopologyCommonAncestor
from pymxsml.mxsml_extension import mxSmlExDeviceGetMetaXLinkRemoteDeviceType as nvmlDeviceGetNvLinkRemoteDeviceType
from pymxsml.mxsml_extension import mxSmlExDeviceGetFieldValues as nvmlDeviceGetFieldValues

from pymxsml.mxsml_extension import mxSmlExFriendlyOnject as nvmlFriendlyObject
from pymxsml.mxsml_extension import mxSmlExStructToFriendlyObject as nvmlStructToFriendlyObject
from pymxsml.mxsml_extension import mxSmlExFriendlyObjectToStruct as nvmlFriendlyObjectToStruct
